//用队列实现栈
#include<queue>
using namespace::std;

/*
q1是储存栈的队列，q2是辅助用的队列，不进行操作时是空队列
实现插入操作时，要插入的数据x进入q2，然后把q1元素依次进入q2，这样q2出元素时就实现了栈先进先出的顺序
由于q1储存栈，再进行swap操作即可
*/
class MyStack {
private:
    queue<int> q1,q2;
public:
    MyStack() {

    }
    
    void push(int x) {
        q2.push(x);
        while (!q1.empty())
        {
            q2.push(q1.front());
            q1.pop();
        }
        swap(q1,q2);
    }
    
    int pop() {
        int x = q1.front();
        q1.pop();
        return x;
    }
    
    int top() {
        return q1.front();
    }
    
    bool empty() {
        return q1.empty();
    }
};

